C dereference पॉइंटर
जैसा कि हम पहले से ही जानते हैं कि "क्या एक सूचक है", एक सूचक एक चर है जो किसी अन्य चर के पते को संग्रहीत करता है। डेरेफ्रेंस ऑपरेटर को एक अप्रत्यक्ष ऑपरेटर के रूप में भी जाना जाता है, जिसे (*) द्वारा दर्शाया गया है। जब अप्रत्यक्ष ऑपरेटर (*) का उपयोग पॉइंटर चर के साथ किया जाता है, तो इसे एक पॉइंटर के रूप में जाना जाता है। जब हम एक सूचक को समाप्त कर देते हैं, तो इस सूचक द्वारा इंगित चर का मान वापस कर दिया जाएगा।
हम डेरेफ्रेंसिंग पॉइंटर का उपयोग क्यों करते हैं?
निम्नलिखित कारणों से एक सूचक का उपयोग किया जाता है: इसका उपयोग मेमोरी स्थान पर संग्रहीत डेटा को एक्सेस या हेरफेर करने के लिए किया जा सकता है, जिसे पॉइंटर द्वारा इंगित किया जाता है। डेरेफर्ड पॉइंटर पर लागू कोई भी ऑपरेशन सीधे उस चर के मूल्य को प्रभावित करेगा जिसे वह इंगित करता है।
आइए एक सूचक सूचक को को ramaurने क के लिए लिए rurणों rurणों raurणों raurणों निrigur नि
सबसे पहले, हम पूर्णांक चर घोषित करते हैं, जिसमें सूचक इंगित करता है।
paunaZ PKsa =9;
अब, हम पूर्णांक सूचक चर घोषित करते हैं।
paunaZ *paiTiAar;
एक पूर्णांक सूचक चर की घोषणा के बाद, हम 'x' चर के पते को पॉइंटर वैरिएबल 'ptr' में संग्रहीत करते हैं।
paiTiAar=&PKsa;
हम नीचे दिए गए अनुसार एक पॉइंटर 'ptr' को dereferencing द्वारा 'X' चर का मान बदल सकते हैं:
*paiTiAar =8;
उपरोक्त पंक्ति 'x' चर के मान को 9 से 8 तक बदल देती है क्योंकि 'ptr' 'X' स्थान और 'ptr' के dereferencing की ओर इशारा करता है, अर्थात, *ptr = 8 x के मान को अपडेट करेगा।
#EZstamaalakre <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
paunaZ PKsa=9;
paunaZ *paiTiAar;
paiTiAar=&PKsa;
*paiTiAar=8;
laiqaiyae("kimata ka x hI : %paunaZ", PKsa);
vaapasakre 0;}
#EZstamaalakre <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
paunaZ PKsa=4;
paunaZ la;
paunaZ *paiTiAar;
paiTiAar=&PKsa;
la=*paiTiAar;
*paiTiAar=5;
laiqaiyae(" kimata ka x hI : %paunaZ",PKsa);
laiqaiyae("\n kimata ka y hI : %paunaZ",la);
vaapasakre 0;
}
उपरोक्त कोड में:
हम दो चर 'x' और 'y' घोषित करते हैं जहाँ 'x' एक '4' मान धारण कर रहा है। हम एक पॉइंटर वैरिएबल 'पीटीआर' घोषित करते हैं। एक पॉइंटर वैरिएबल की घोषणा के बाद, हम 'x' चर का पता पॉइंटर 'ptr' को प्रदान करते हैं। जैसा कि हम जानते हैं कि 'ptr' में 'x' चर का पता होता है, इसलिए '*ptr' 'x' के समान है। हम 'x' चर की मदद से 'X' का मान 'y' का मान असाइन करते हैं, अर्थात, y =*ptr के बजाय 'x' चर का उपयोग करने के बजाय।
नोट: हमारे अनुसार, यदि हम 'x' का मान बदलते हैं, तो 'Y' का मान भी बदल जाएगा क्योंकि पॉइंटर 'Ptr' 'X' चर का पता रखता है। लेकिन ऐसा नहीं होता है, क्योंकि 'y' मूल्य '5' की स्थानीय प्रति संग्रहीत कर रहा है।
आइए एक और परिदृश्य पर विचार करें।
आइए r एक rur प rur प rur प rayr कray
#EZstamaalakre <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
paunaZ P=90;
paunaZ *cjt1,*cjt2;
cjt1=&P;
cjt2=&P;
*cjt1=7;
*cjt2=6;
laiqaiyae(" kimata ka a hI : %paunaZ",P);
vaapasakre 0;
}
First, we declare an 'a' variable. Then we declare two pointers, i.e., ptr1 and ptr2. Both the pointers contain the address of 'a' variable. We assign the '7' value to the *ptr1 and '6' to the *ptr2. The final value of 'a' would be '6'.
नोट: यदि हमारे पास एक ही स्थान की ओर इशारा करते हुए एक से अधिक पॉइंटर हैं, तो एक पॉइंटर द्वारा किया गया परिवर्तन दूसरे पॉइंटर के समान होगा।